CLK-5.0-WithCover.pdf
目录序言................................................................................ 1本书目标.................................................................... 1本书特点.................................................................... 1阅读早期内核的其他好处 ........................................ 2阅读完整源代码的重要性和必要性 ........................ 2如何选择要阅读的内核版本 .................................... 3阅读本书需具备的基础知识 .................................... 3使用早期版本是否过时? ........................................ 4EXT 文件系统与 MINIX 文件系统........................... 41 概述........................................................................ 51.1 LINUX 的诞生和发展 .................................... 51.2 内容综述...................................................... 121.3 本章小结...................................................... 162 微型计算机组成结构.......................................... 172.1 微型计算机组成原理.................................. 172.2 I/O 端口寻址和访问控制方式 ................... 192.3 主存储器、BIOS 和 CMOS 存储器 .......... 212.4 控制器和控制卡.......................................... 232.5 本章小结...................................................... 323 内核编程语言和环境.......................................... 333.1 AS86 汇编器 ................................................ 333.2 GNU AS 汇编 ............................................... 393.3 C 语言程序.................................................. 493.4 C 与汇编程序的相互调用.......................... 573.5 LINUX 0.12 目标文件格式 .......................... 653.6 MAKE 程序和 MAKEFILE 文件.................... 743.7 本章小结...................................................... 794 80X86 保护模式及其编程.................................. 814.1 80X86 系统寄存器和系统指令 ................. 814.2 保护模式内存管理...................................... 874.3 分段机制...................................................... 914.4 分页机制.................................................... 1024.5 保护 ........................................................... 1064.6 中断和异常处理........................................ 1164.7 任务管理.................................................... 1264.8 保护模式编程初始化................................ 1344.9 一个简单的多任务内核实例.................... 1374.10 本章小结.................................................... 1475 LINUX 内核体系结构...................................... 1495.1 LINUX 内核模式 ........................................ 1495.2 LINUX 内核系统体系结构 ........................ 1505.3 LINUX 内核对内存的管理和使用............. 1525.4 中断机制.................................................... 1655.5 LINUX 的系统调用..................................... 1695.6 系统时间和定时........................................ 1725.7 LINUX 进程控制 ........................................ 1735.8 LINUX 系统中堆栈的使用方法................. 1835.9 LINUX 0.12 采用的文件系统..................... 1875.10 LINUX 内核源代码的目录结构................. 1885.11 内核与应用程序的关系............................ 1965.12 LINUX/MAKEFILE 文件............................... 1975.13 本章小结.................................................... 2026 引导启动程序(BOOT)................................. 2036.1 总体功能.................................................... 2036.2 BOOTSECT.S 程序 ....................................... 2056.3 SETUP.S 程序.............................................. 2196.4 HEAD.S 程序 ............................................... 2486.5 本章小结.................................................... 2617 初始化程序(INIT)............................................. 2637.1 MAIN.C 程序 ............................................... 2637.2 环境初始化工作........................................ 2767.3 本章小结.................................................... 2788 内核代码(KERNEL)......................................... 2798.1 总体功能.................................................... 2798.2 ASM.S 程序 ................................................. 2828.3 TRAPS.C 程序.............................................. 2888.4 SYS_CALL.S 程序........................................ 2948.5 MKTIME.C 程序........................................... 3078.6 SCHED.C 程序 ............................................. 3098.7 SIGNAL.C 程序............................................ 3298.8 EXIT.C 程序................................................. 3458.9 FORK.C 程序 ............................................... 3598.10 SYS.C 程序.................................................. 3668.11 VSPRINTF.C 程序......................................... 3828.12 PRINTK.C 程序 ............................................ 3908.13 PANIC.C 程序 .............................................. 3918.14 本章小结.................................................... 3929 块设备驱动程序(BLOCK DRIVER) .............. 3939.1 总体功能.................................................... 3949.2 BLK.H 文件 ................................................. 3989.3 HD.C 程序................................................... 4029.4 LL_RW_BLK.C 程序..................................... 4259.5 RAMDISK.C 程序......................................... 4329.6 FLOPPY.C 程序 ............................................ 438目录- II -9.7 本章小结.................................................... 46610 字符设备驱动程序(CHAR DRIVER)......... 46710.1 总体功能.................................................... 46710.2 KEYBOARD.S 程序...................................... 47810.3 CONSOLE.C 程序......................................... 49710.4 SERIAL.C 程序 ............................................ 53210.5 RS_IO.S 程序............................................... 54010.6 TTY_IO.C 程序............................................ 54410.7 TTY_IOCTL.C 程序...................................... 56010.8 本章小结.................................................... 56811 数学协处理器(MATH)................................. 56911.1 总体功能描述............................................ 56911.2 MATH-EMULATION.C 程序........................... 57811.3 ERROR.C 程序............................................. 59011.4 EA.C 程序 ................................................... 59111.5 CONVERT.C 程序......................................... 59511.6 ADD.C 程序................................................. 60011.7 COMPARE.C 程序 ........................................ 60311.8 GET_PUT.C 程序.......................................... 60511.9 MUL.C 程序 ................................................ 61111.10 DIV.C 程序.............................................. 61311.11 本章小结 ............................................... 61512 文件系统(FS) ................................................ 61712.1 总体功能.................................................... 61712.2 BUFFER.C 程序............................................ 63412.3 BITMAP.C 程序............................................ 65212.4 TRUNCATE.C 程序....................................... 65812.5 INODE.C 程序.............................................. 66112.6 SUPER.C 程序.............................................. 67312.7 NAMEI.C 程序 ............................................. 68312.8 FILE_TABLE.C 程序..................................... 71012.9 BLOCK_DEV.C 程序..................................... 71012.10 FILE_DEV.C 程序..................................... 71412.11 PIPE.C 程序............................................. 71712.12 CHAR_DEV.C 程序 .................................. 72212.13 READ_WRITE.C 程序............................... 72512.14 OPEN.C 程序........................................... 73112.15 EXEC.C 程序........................................... 73912.16 STAT.C 程序 ............................................ 75612.17 FCNTL.C 程序 ......................................... 75912.18 IOCTL.C 程序.......................................... 76212.19 SELECT.C 程序........................................ 76412.20 本章小结 ............................................... 77613 内存管理(MM) ............................................. 77713.1 总体功能.................................................... 77713.2 MEMORY.C 程序.......................................... 78613.3 PAGE.S 程序................................................ 80513.4 SWAP.C 程序 ............................................... 80613.5 本章小结.................................................... 81514 头文件(INCLUDE)....................................... 81714.1 INCLUDE/目录下的文件............................. 81714.2 A.OUT.H 文件.............................................. 81914.3 CONST.H 文件 ............................................. 82914.4 CTYPE.H 文件 ............................................. 83014.5 ERRNO.H 文件............................................. 83114.6 FCNTL.H 文件 ............................................. 83414.7 SIGNAL.H 文件............................................ 83614.8 STDARG.H 文件........................................... 83814.9 STDDEF.H 文件............................................ 84014.10 STRING.H 文件........................................ 84114.11 TERMIOS.H 文件 ..................................... 85114.12 TIME.H 文件............................................ 85814.13 UNISTD.H 文件........................................ 85914.14 UTIME.H 文件 ......................................... 86614.15 INCLUDE/ASM/目录下的文件................. 86714.16 IO.H 文件................................................ 86714.17 MEMORY.H 文件...................................... 86814.18 SEGMENT.H 文件..................................... 86914.19 SYSTEM.H 文件....................................... 87114.20 INCLUDE/LINUX/目录下的文件.............. 87614.21 CONFIG.H 文件 ....................................... 87614.22 FDREG.H 头文件..................................... 87814.23 FS.H 文件................................................ 88114.24 HDREG.H 文件 ........................................ 88714.25 HEAD.H 文件 .......................................... 89014.26 KERNEL.H 文件....................................... 89014.27 MATH_EMU.H 文件 ................................. 89214.28 MM.H 文件.............................................. 89614.29 SCHED.H 文件......................................... 89814.30 SYS.H 文件 ............................................. 90614.31 TTY.H 文件.............................................. 90914.32 INCLUDE/SYS/目录中的文件.................. 91314.33 PARAM.H 文件........................................ 91314.34 RESOURCE.H 文件................................... 91414.35 STAT.H 文件 ............................................ 91614.36 TIME.H 文件............................................ 91814.37 TIMES.H 文件.......................................... 91914.38 TYPES.H 文件.......................................... 92014.39 UTSNAME.H 文件.................................... 92114.40 WAIT.H 文件............................................ 92214.41 本章小结 ............................................... 92315 库文件(LIB) .................................................. 92515.1 _EXIT.C 程序............................................... 92615.2 CLOSE.C 程序.............................................. 92715.3 CTYPE.C 程序.............................................. 92715.4 DUP.C 程序.................................................. 92815.5 ERRNO.C 程序............................................. 92915.6 EXECVE.C 程序........................................... 92915.7 MALLOC.C 程序 .......................................... 93015.8 OPEN.C 程序 ............................................... 93915.9 SETSID.C 程序............................................. 940目录- III -15.10 STRING.C 程序........................................ 94115.11 WAIT.C 程序............................................ 94115.12 WRITE.C 程序 ......................................... 94215.13 本章小结 ............................................... 94316 建造工具(TOOLS) ....................................... 94516.1 BUILD.C 程序.............................................. 94516.2 本章小结.................................................... 95217 实验环境设置与使用方法............................ 95317.1 BOCHS 仿真软件系统................................ 95317.2 在 BOCHS 中运行 LINUX 0.1X 系统 .......... 95817.3 访问磁盘映像文件中的信息.................... 96217.4 编译运行简单内核示例程序.................... 96517.5 利用 BOCHS 调试内核............................... 96717.6 创建磁盘映像文件.................................... 97417.7 制作根文件系统........................................ 97817.8 在 LINUX 0.12 系统上编译 0.12 内核....... 98517.9 在 REDHAT 系统下编译 LINUX 0.1X 内核 98617.10 内核引导 根文件系统组成的集成盘.. 99017.11 利用 GDB 和 BOCHS 调试内核源代码 99517.12 本章小结 ............................................. 1000参考文献 .................................................................. 1001附录 .......................................................................... 1003附录 1 ASCII 码表 ............................................... 1003附录 2 常用 C0、C1 控制字符表 ...................... 1004附录 3 常用转义序列和控制序列...................... 1005附录 4 第 1 套键盘扫描码集.............................. 1008
评论